# flask如何返回json数据,以及如何修改Content-Type
#    使用 make_response 来进行修改
#    1. 引入 make_response 从flask中
#    2. 如何进行返回
#           准备数据: 数据可以是python对象
#           response = make_response(data)  # 自动转 JSON
#           response.headers["Content-Type"] = "application/json" #可不写
#           return response

# 直接返回 jsonify
# 1. 引入 jsonify 从flask中
# 2. 如何返回
#    return jsonify(data)  # 自动设置 Content-Type: application/json

# 返回纯文本
# return "Hello, World!", 200, {"Content-Type": "text/plain"}


from flask import Flask , make_response , jsonify
import random
import json
from faker import Faker
app = Flask(__name__)

# 随机生成一个用户
def generate_user():
    fake = Faker()

    user = {
        'id': fake.uuid4(),
        'name': fake.name(),
        'username': fake.user_name(),
        'email': fake.email(),
        'phone': fake.phone_number(),
        'address': {
            'street': fake.street_address(),
            'city': fake.city(),
            'state': fake.state(),
            'zipcode': fake.zipcode(),
            'country': fake.country()
        },
        'birth_date': fake.date_of_birth(minimum_age=18, maximum_age=90).strftime('%Y-%m-%d'),
        'registration_date': fake.date_this_decade().strftime('%Y-%m-%d'),
        'gender': random.choice(['Male', 'Female', 'Other']),
        'website': fake.url(),
        'company': fake.company(),
        'job': fake.job(),
        'credit_card': {
            'number': fake.credit_card_number(),
            'expire': fake.credit_card_expire(),
            'provider': fake.credit_card_provider()
        },
        'interests': [fake.word() for _ in range(random.randint(1, 5))]
    }

    return user


@app.route('/userinfo')
def index():
    # return "Hello World!"
    # return '<h1>Hello World!</h1>'
    # return render_template("hello.html",name="damu")

    #随机生成一个用户信息进行返回


    # 返回json数据
    # response = make_response(user_data)
    # return response

    #返回json数据
    # return jsonify(user_data)

    # 返回json数据 (将一个python对象转成json,序列化,json.dumps())
    user_data = generate_user()
    user_data_josn = json.dumps(user_data)
    return user_data_josn , {"Content-Type": "application/json"}

if __name__ == '__main__':
    app.run(debug=True,host='0.0.0.0')